package com.czmh.etc.common.core.mapper;

import java.util.List;
import java.util.Map;

/**
 * @ClassName: BaseMapper
 * @Description: TODO(公用的持久化Mapper类，提供基础数据持久化的公共功能)
 * @author Seven
 * @param <T>
 */
public interface BaseMapper<T, PK extends java.io.Serializable> {
	/**
	 * insert
	 * 
	 * @TODO(插入实体对像) @author Seven
	 * @param model
	 *            泛型实体类
	 * @return void 无
	 * @throws 无
	 */
	void insert(T model);

	/**
	 * delById
	 * 
	 * @TODO(删除实体对像) @author Seven
	 * @param modelPK
	 *            ID主键
	 * @return void 无
	 * @throws 无
	 */
	void delById(PK modelPK);

	/**
	 * update
	 * 
	 * @TODO(更新实体对像) @author Seven
	 *            泛型实体类
	 * @param model
	 * @return void 无
	 * @throws 无
	 */
	void update(T model);

	/**
	 * getAll
	 * 
	 * @TODO(获取所有实体对像) @author Seven
	 * @param 无
	 * @return List 实体对象List集合
	 * @throws 无
	 */
	List<T> getAll();

	/**
	 * 
	 * 按条件获取所有实体对像
	 * @param Map<String, Object> 条件参数集合
	 * @return List 实体对象List集合
	 * @throws 无
	 */
	List<T> getAll(Map<String, Object> params);

	/**
	 * getById
	 * 
	 * @TODO(根据ID主键获取单个实体对象) @author Seven
	 * @param modelPK
	 *            ID主键
	 * @return T 泛型实体对象
	 * @throws 无
	 */
	T getById(PK modelPK);

	/**
	 * 获取总记录数
	 * 
	 * @param params
	 * @return
	 */
	Long count(Map<String, Object> params);
}
